package com.example.dense_rack_server.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.example.dense_rack_server.entityVo.dataBackup.BackupJobVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 备份任务信息
 * </p>
 *
 * @author  张彬 
 * @since 2025-07-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) // 支持链式调用 chain = true 参数表示生成的 setter 方法会返回 this，从而支持链式调用。例如，backupTask.setNodeId(1).setCron("0 0 12 * * ?").setStatus(true);
@TableName(value = "backup_task", autoResultMap = true)
// autoResultMap = true 表示自动为这个实体类生成一个 resultMap，这个 resultMap 可以用于 MyBatis 的映射配置。这样可以避免手动编写繁琐的映射配置。
public class BackupTask implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 数据连接id
     */
    private Integer nodeId;

    /**
     * cron表达式
     */
    private String cron;

    /**
     * cron描述
     */
    private String cronText;

    /**
     * 参数
     */
    @TableField(value = "param", typeHandler = JacksonTypeHandler.class)
    private BackupJobVO param;

    /**
     * 状态（0-停止1-启动）
     */
    private Boolean status;

    /**
     * 库名
     */
    private String databaseName;

    /**
     * 表名
     */
    private String tablesName;

    /**
     * 备份方式
     */
    private Integer dataType;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 删除状态（0--未删除1--已删除）
     */
    private Integer delFlag;


}
